home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / RCUNION.C < prev    next >
C/C++ Source or Header  |  1993-03-21  |  1KB  |  51 lines

  1. /**************************************************************************
  2.  * RCUNION.C - Compute union of 2 GRECT rectangles.
  3.  *             Does not return anything, since by definition the two
  4.  *             rectangles will have common area.
  5.  *************************************************************************/
  6.  
  7. #include "gemfintl.h"
  8.  
  9. void rc_union(prect1, prect2)
  10.     register GRECT *prect1;
  11.     register GRECT *prect2;
  12. {
  13.     register short    w1, w2;
  14.     short             lx, rx;
  15.     short             ty, by;
  16.  
  17.     /* calc right-side x as the greater x of the two rectangles */
  18.  
  19.     w1 = prect1->g_x + prect1->g_w;
  20.     w2 = prect2->g_x + prect2->g_w;
  21.     rx  = (w1 > w2) ? w1 : w2;
  22.  
  23.     /*  calc bottom y as the greater y of the two rectanlges */
  24.  
  25.     w1 = prect1->g_y + prect1->g_h;
  26.     w2 = prect2->g_y + prect2->g_h;
  27.     by  = (w1 > w2) ? w1 : w2;
  28.  
  29.     /* calc left-side x as the lesser x of the two rectangles */
  30.  
  31.     w1 = prect1->g_x;
  32.     w2 = prect2->g_x;
  33.     lx = (w1 < w2) ? w1 : w2;
  34.  
  35.     /* calc top y as the lesser y of the two rectangles */
  36.  
  37.     w1 = prect1->g_y;
  38.     w2 = prect2->g_y;
  39.     ty = (w1 < w2) ? w1 : w2;
  40.  
  41.     /* store the calculated rectangle (converting back to GRECT-type w/h) */
  42.  
  43.     prect2->g_x = lx;
  44.     prect2->g_y = ty;
  45.     prect2->g_w = rx - lx;
  46.     prect2->g_h = by - ty;
  47.  
  48. }
  49.  
  50.  
  51.